package com.bjmashibing.system.huawei.oppo;

import com.alibaba.fastjson.JSONObject;
import com.oppo.push.server.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import java.util.UUID;

/**
 * @Classname oppo_push
 * @Description TODO
 * @Date 2021/1/9/009 11:24
 * @Created by Administrator
 */
public class oppo_push {
    private final static Logger logger = LoggerFactory.getLogger(oppo_push.class);
    private static Notification getNotification(String str_title, String str_big_body, String str_machine_account, String str_event_info) {

        Notification notification = new Notification();
//        notification.setTitle("通知栏消息tile");
        notification.setTitle(str_title);
//        notification.setContent("通知栏内容");
        notification.setContent(str_big_body);
        //通知栏样式 1. 标准样式  2. 长文本样式  3. 大图样式 【非必填，默认1-标准样式】
        notification.setStyle(1);

// App开发者自定义消息Id，OPPO推送平台根据此ID做去重处理，对于广播推送相同appMessageId只会保存一次，对于单推相同appMessageId只会推送一次
        notification.setAppMessageId(UUID.randomUUID().toString());
// 应用接收消息到达回执的回调URL，字数限制200以内，中英文均以一个计算
//        notification.setCallBackUrl("https://boxigarden.cn:8080/hello_oppo");
        notification.setCallBackUrl("https://hbpush.com:8080/hello_oppo");
// App开发者自定义回执参数，字数限制50以内，中英文均以一个计算
        notification.setCallBackParameter("");
// 点击动作类型0，启动应用；1，打开应用内页（activity的intent action）；2，打开网页；4，打开应用内页（activity）；【非必填，默认值为0】;5,Intent scheme URL
//        notification.setClickActionType(4);
        notification.setClickActionType(0);
// 应用内页地址【click_action_type为1或4时必填，长度500】
        notification.setClickActionActivity("com.hengbo.test_oppo_push_app.InternalActivity");
// 网页地址【click_action_type为2必填，长度500】
        notification.setClickActionUrl("http://www.test.com");
// 动作参数，打开应用内页或网页时传递给应用或网页【JSON格式，非必填】，字符数不能超过4K，示例：{"key1":"value1","key2":"value2"}
//        notification.setActionParameters("{\"key1\":\"value1\",\"key2\":\"value2\"}");


        JSONObject aaa = new JSONObject();

        aaa.put("name","wangyuhong");
        aaa.put("age","45");
        aaa.put("machine_account", str_machine_account);
        aaa.put("event_info", str_event_info);
//        notification.setActionParameters("{\"name\":\"wangyuhong\",\"key2\":\"value2\"}");
        notification.setActionParameters(aaa.toString());
// 展示类型 (0, “即时”),(1, “定时”)
        notification.setShowTimeType(1);
// 定时展示开始时间（根据time_zone转换成当地时间），时间的毫秒数
        notification.setShowStartTime(System.currentTimeMillis() + 1000 * 60 * 3);
// 定时展示结束时间（根据time_zone转换成当地时间），时间的毫秒数
        notification.setShowEndTime(System.currentTimeMillis() + 1000 * 60 * 5);
// 是否进离线消息,【非必填，默认为True】
        notification.setOffLine(true);
// 离线消息的存活时间(time_to_live) (单位：秒), 【off_line值为true时，必填，最长3天】
        notification.setOffLineTtl(24 * 3600);
// 时区，默认值：（GMT+08:00）北京，香港，新加坡
        notification.setTimeZone("GMT+08:00");
// 0：不限联网方式, 1：仅wifi推送
        notification.setNetworkType(0);
        notification.setChannelId("RingRing");
        return notification;
    }
    public static void send_message_oppo_to_regid(String regid,String str_title,String str_big_body,String str_machine_account,String str_event_info) {
        try {
            Sender sender = new Sender("78a11428fb2d40ae8d6e857ae4e93bd6", "1e4b7d0bb2d94149bfa722aa92c1ab83");
            Notification notification = getNotification(str_title,str_big_body,str_machine_account,str_event_info); //创建通知栏消息体

//            Target target = Target.build("CN_a813bde520a0cf430007a023f4850e0f"); //创建发送对象
            Target target = Target.build(regid); //创建发送对象

            Result result = sender.unicastNotification(notification, target);  //发送单推消息

            int statusCode = result.getStatusCode(); // 获取http请求状态码
//            logger.info("statusCode=" + statusCode);

            ReturnCode returnCode = result.getReturnCode(); // 获取平台返回码
//            logger.info("returnCode=" + returnCode.toString());
            logger.info("oppo,return_message=" + returnCode.getMessage()  + "," + str_machine_account);
//            logger.info("return_code=" + returnCode.getCode());
//            logger.info("reason_code=" + result.getReason());
            int code = returnCode.getCode();
//            logger.info("code=" + code);



            result.getMessageId();  // 获取平台返回的messageId
        } catch (Exception e) {
            logger.info("send_message_oppo_to_regid,error=",e);
            e.printStackTrace();
        }
    }



}
